<?php

/**
 * This is the model class for table "clientes".
 *
 * The followings are the available columns in table 'clientes':
 * @property string $cedula
 * @property string $razon_social
 * @property string $contacto
 * @property string $direccion
 * @property string $telefono
 * @property string $id_zona
 * @property string $tipo_cliente
 * @property string $descuento
 * @property double $cupo_asignado
 * @property double $cupo
 * @property double $cartera
 * @property string $dia_visita
 * @property string $orden_visita
 * @property string $nit
 * @property string $cod_ciudad
 * @property string $nom_ciudad
 * @property string $cod_barrio
 * @property string $nom_barrio
 * @property string $Ruta_1
 * @property string $Ruta_2
 * @property string $Ruta_3
 * @property string $Ruta_4
 * @property string $Fecha_ingreso
 * @property string $Frecuencia
 * @property string $Intensidad
 * @property string $Tipo_credito
 * @property string $Forma_pago
 * @property string $Plazo
 * @property string $Dias_vencido
 * @property string $Mod_plazo_max
 * @property string $Dias_descuento
 * @property string $Activo
 * @property string $Dias_espera
 * @property string $Lista_precio
 * @property string $Max_Dcto_Pronto
 * @property string $IdEstablecimiento
 * @property string $IdUnidadNegocio
 * @property string $Id
 * @property string $email
 * @property string $fax
 * @property string $longitud
 * @property string $latitud
 * @property string $Aniversario
 * @property string $Segmento
 * @property string $Canal
 */
class Clientes extends CActiveRecord {

    /**
     * @return string the associated database table name
     */
    public function tableName() {
        return 'clientes';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules() {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('IdEstablecimiento, IdUnidadNegocio, Id, email, fax, longitud, latitud, Aniversario, Segmento, Canal', 'required'),
            array('cupo_asignado, cupo, cartera', 'numerical'),
            array('cedula, telefono, tipo_cliente, nit, cod_ciudad, nom_ciudad, cod_barrio, nom_barrio, Ruta_1, Ruta_2, Ruta_3, Ruta_4, Fecha_ingreso, Aniversario, Segmento, Canal', 'length', 'max' => 25),
            array('razon_social', 'length', 'max' => 80),
            array('contacto', 'length', 'max' => 30),
            array('direccion', 'length', 'max' => 60),
            array('id_zona', 'length', 'max' => 16),
            array('descuento, Mod_plazo_max', 'length', 'max' => 10),
            array('dia_visita, Lista_precio', 'length', 'max' => 2),
            array('Frecuencia, Intensidad, Activo', 'length', 'max' => 1),
            array('Tipo_credito, Max_Dcto_Pronto, IdEstablecimiento, IdUnidadNegocio, Id', 'length', 'max' => 15),
            array('Forma_pago', 'length', 'max' => 20),
            array('Plazo, Dias_vencido, Dias_descuento, Dias_espera', 'length', 'max' => 5),
            array('email, fax, longitud, latitud', 'length', 'max' => 100),
            array('orden_visita', 'safe'),
            // The following rule is used by search().
            // @todo Please remove those attributes that should not be searched.
            array('cedula, razon_social, contacto, direccion, telefono, id_zona, tipo_cliente, descuento, cupo_asignado, cupo, cartera, dia_visita, orden_visita, nit, cod_ciudad, nom_ciudad, cod_barrio, nom_barrio, Ruta_1, Ruta_2, Ruta_3, Ruta_4, Fecha_ingreso, Frecuencia, Intensidad, Tipo_credito, Forma_pago, Plazo, Dias_vencido, Mod_plazo_max, Dias_descuento, Activo, Dias_espera, Lista_precio, Max_Dcto_Pronto, IdEstablecimiento, IdUnidadNegocio, Id, email, fax, longitud, latitud, Aniversario, Segmento, Canal', 'safe', 'on' => 'search'),
        );
    }

    /**
     * @return array relational rules.
     */
    public function relations() {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
        );
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'cedula' => 'Cedula',
            'razon_social' => 'Razon Social',
            'contacto' => 'Contacto',
            'direccion' => 'Direccion',
            'telefono' => 'Telefono',
            'id_zona' => 'Id Zona',
            'tipo_cliente' => 'Tipo Cliente',
            'descuento' => 'Descuento',
            'cupo_asignado' => 'Cupo Asignado',
            'cupo' => 'Cupo',
            'cartera' => 'Cartera',
            'dia_visita' => 'Dia Visita',
            'orden_visita' => 'Orden Visita',
            'nit' => 'Nit',
            'cod_ciudad' => 'Cod Ciudad',
            'nom_ciudad' => 'Nom Ciudad',
            'cod_barrio' => 'Cod Barrio',
            'nom_barrio' => 'Nom Barrio',
            'Ruta_1' => 'Ruta 1',
            'Ruta_2' => 'Ruta 2',
            'Ruta_3' => 'Ruta 3',
            'Ruta_4' => 'Ruta 4',
            'Fecha_ingreso' => 'Fecha Ingreso',
            'Frecuencia' => 'Frecuencia',
            'Intensidad' => 'Intensidad',
            'Tipo_credito' => 'Tipo Credito',
            'Forma_pago' => 'Forma Pago',
            'Plazo' => 'Plazo',
            'Dias_vencido' => 'Dias Vencido',
            'Mod_plazo_max' => 'Mod Plazo Max',
            'Dias_descuento' => 'Dias Descuento',
            'Activo' => 'Activo',
            'Dias_espera' => 'Dias Espera',
            'Lista_precio' => 'Lista Precio',
            'Max_Dcto_Pronto' => 'Max Dcto Pronto',
            'IdEstablecimiento' => 'Id Establecimiento',
            'IdUnidadNegocio' => 'Id Unidad Negocio',
            'Id' => 'ID',
            'email' => 'Email',
            'fax' => 'Fax',
            'longitud' => 'Longitud',
            'latitud' => 'Latitud',
            'Aniversario' => 'Aniversario',
            'Segmento' => 'Segmento',
            'Canal' => 'Canal',
        );
    }

    /**
     * Retrieves a list of models based on the current search/filter conditions.
     *
     * Typical usecase:
     * - Initialize the model fields with values from filter form.
     * - Execute this method to get CActiveDataProvider instance which will filter
     * models according to data in model fields.
     * - Pass data provider to CGridView, CListView or any similar widget.
     *
     * @return CActiveDataProvider the data provider that can return the models
     * based on the search/filter conditions.
     */
    public function search() {
        // @todo Please modify the following code to remove attributes that should not be searched.

        $criteria = new CDbCriteria;

        $criteria->compare('cedula', $this->cedula, true);
        $criteria->compare('razon_social', $this->razon_social, true);
        $criteria->compare('contacto', $this->contacto, true);
        $criteria->compare('direccion', $this->direccion, true);
        $criteria->compare('telefono', $this->telefono, true);
        $criteria->compare('id_zona', $this->id_zona, true);
        $criteria->compare('tipo_cliente', $this->tipo_cliente, true);
        $criteria->compare('descuento', $this->descuento, true);
        $criteria->compare('cupo_asignado', $this->cupo_asignado);
        $criteria->compare('cupo', $this->cupo);
        $criteria->compare('cartera', $this->cartera);
        $criteria->compare('dia_visita', $this->dia_visita, true);
        $criteria->compare('orden_visita', $this->orden_visita, true);
        $criteria->compare('nit', $this->nit, true);
        $criteria->compare('cod_ciudad', $this->cod_ciudad, true);
        $criteria->compare('nom_ciudad', $this->nom_ciudad, true);
        $criteria->compare('cod_barrio', $this->cod_barrio, true);
        $criteria->compare('nom_barrio', $this->nom_barrio, true);
        $criteria->compare('Ruta_1', $this->Ruta_1, true);
        $criteria->compare('Ruta_2', $this->Ruta_2, true);
        $criteria->compare('Ruta_3', $this->Ruta_3, true);
        $criteria->compare('Ruta_4', $this->Ruta_4, true);
        $criteria->compare('Fecha_ingreso', $this->Fecha_ingreso, true);
        $criteria->compare('Frecuencia', $this->Frecuencia, true);
        $criteria->compare('Intensidad', $this->Intensidad, true);
        $criteria->compare('Tipo_credito', $this->Tipo_credito, true);
        $criteria->compare('Forma_pago', $this->Forma_pago, true);
        $criteria->compare('Plazo', $this->Plazo, true);
        $criteria->compare('Dias_vencido', $this->Dias_vencido, true);
        $criteria->compare('Mod_plazo_max', $this->Mod_plazo_max, true);
        $criteria->compare('Dias_descuento', $this->Dias_descuento, true);
        $criteria->compare('Activo', $this->Activo, true);
        $criteria->compare('Dias_espera', $this->Dias_espera, true);
        $criteria->compare('Lista_precio', $this->Lista_precio, true);
        $criteria->compare('Max_Dcto_Pronto', $this->Max_Dcto_Pronto, true);
        $criteria->compare('IdEstablecimiento', $this->IdEstablecimiento, true);
        $criteria->compare('IdUnidadNegocio', $this->IdUnidadNegocio, true);
        $criteria->compare('Id', $this->Id, true);
        $criteria->compare('email', $this->email, true);
        $criteria->compare('fax', $this->fax, true);
        $criteria->compare('longitud', $this->longitud, true);
        $criteria->compare('latitud', $this->latitud, true);
        $criteria->compare('Aniversario', $this->Aniversario, true);
        $criteria->compare('Segmento', $this->Segmento, true);
        $criteria->compare('Canal', $this->Canal, true);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    /**
     * Returns the static model of the specified AR class.
     * Please note that you should have this exact method in all your CActiveRecord descendants!
     * @param string $className active record class name.
     * @return Clientes the static model class
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public function getReporteRutero() {
        $connection = Yii::app()->db;
        $sql = "SELECT cli.cedula,cli.contacto,cli.razon_social,cli.nit,cli.nom_barrio,cli.direccion,".
                "cli.Ruta_1,cli.Ruta_2,cli.Ruta_3,cli.Ruta_4,usua.nombres,usua.origen,usua.unidad_de_negocio,".
                "usua.id_unidad_negocio,usua.cedula as asesor FROM `clientes` cli INNER JOIN `usuarios` usua".
                " ON usua.cedula=cli.id_zona ORDER BY cli.contacto";
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getClientesxRuta($ruta) {
        $connection = Yii::app()->db;
        $sql = "SELECT DISTINCT cli.cedula,cli.contacto FROM `clientes` cli INNER JOIN `usuarios` usua ".
                "ON usua.cedula=cli.id_zona ORDER BY cli.contacto";
        if ($ruta > 0 && $ruta <= 6):
            $sql.=" AND Ruta_1=".$ruta."";
        elseif($ruta > 6 && $ruta <= 12):
            $sql.=" AND Ruta_2=".$ruta."";
        elseif($ruta > 12 && $ruta <= 18):
            $sql.=" AND Ruta_3=".$ruta."";
        elseif($ruta > 18 && $ruta <= 24):
            $sql.=" AND Ruta_4=".$ruta."";
        endif;
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getClientesxRutaxAsesor($ruta,$asesor) {
        $connection = Yii::app()->db;
        $sql = "SELECT DISTINCT cli.cedula,cli.contacto FROM `clientes` cli INNER JOIN `usuarios` usua ".
                "ON usua.cedula=cli.id_zona AND usua.cedula=".$asesor;
        if ($ruta > 0 && $ruta <= 6):
            $sql.=" AND Ruta_1=".$ruta." ORDER BY cli.contacto";
        elseif($ruta > 6 && $ruta <= 12):
            $sql.=" AND Ruta_2=".$ruta." ORDER BY cli.contacto";
        elseif($ruta > 12 && $ruta <= 18):
            $sql.=" AND Ruta_3=".$ruta." ORDER BY cli.contacto";
        elseif($ruta > 18 && $ruta <= 24):
            $sql.=" AND Ruta_4=".$ruta." ORDER BY cli.contacto";
        endif;
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getAsesores() {
        $connection = Yii::app()->db;
        $sql = "SELECT cedula,nombres FROM `usuarios`";
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getUnidadNegocio() {
        $connection = Yii::app()->db;
        $sql = "SELECT DISTINCT id_unidad_negocio,unidad_de_negocio FROM `usuarios`";
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getUnidadesxAsesor($asesor) {
        $connection = Yii::app()->db;
        $sql = "SELECT DISTINCT id_unidad_negocio,unidad_de_negocio FROM `usuarios`";
        if($asesor > 0):
            $sql.=" WHERE cedula='".$asesor."'";
        endif;
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getAsesoresxUnidad($unidad_negocio) {
        $connection = Yii::app()->db;
        $sql = "SELECT cedula,nombres FROM `usuarios`";
        if($unidad_negocio > 0):
            $sql.=" WHERE id_unidad_negocio='".$unidad_negocio."'";
        endif;
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getResultadoBusqueda($ruta, $cliente, $asesor, $unidad_negocio) {
        $connection = Yii::app()->db;
        $sql = "SELECT cli.cedula,cli.contacto,cli.razon_social,cli.nit,cli.nom_barrio,cli.direccion,cli.Ruta_1,cli.Ruta_2,cli.Ruta_3,cli.Ruta_4,usua.nombres,usua.origen,usua.unidad_de_negocio,usua.id_unidad_negocio,usua.cedula as asesor FROM `clientes` cli INNER JOIN `usuarios` usua";
        if ($ruta != 0 && $cliente == '' && $asesor == 0 && $unidad_negocio == 0):
            $sql.=" ON usua.cedula=cli.id_zona AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.")";
        elseif ($ruta == 0 && $cliente != '' && $asesor == 0 && $unidad_negocio == 0):
            $sql.=" ON usua.cedula=cli.id_zona AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        elseif ($ruta == 0 && $cliente == '' && $asesor != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND usua.cedula=".$asesor;
        elseif ($ruta == 0 && $cliente == '' && $asesor == 0 && $unidad_negocio != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND id_unidad_negocio=".$unidad_negocio;
        elseif ($ruta == 0 && $cliente != '' && $asesor != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND usua.cedula=".$asesor." AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        elseif ($ruta == 0 && $cliente != '' && $asesor == 0 && $unidad_negocio != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND id_unidad_negocio=".$unidad_negocio." AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        elseif ($ruta != 0 && $cliente != '' && $asesor != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND usua.cedula=".$asesor." AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.") AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        elseif ($ruta != 0 && $cliente != '' && $asesor == 0 && $unidad_negocio != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.") AND id_unidad_negocio=".$unidad_negocio." AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        elseif ($ruta != 0 && $cliente == '' && $asesor != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.") AND cli.id_zona=".$asesor;
        elseif ($ruta != 0 && $cliente == '' && $asesor == 0 && $unidad_negocio != 0):
            $sql.=" ON usua.cedula=cli.id_zona AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.") AND id_unidad_negocio=".$unidad_negocio;
        elseif ($ruta != 0 && $cliente != ''):
            $sql.=" ON usua.cedula=cli.id_zona AND (Ruta_1=".$ruta." OR Ruta_2=".$ruta." OR Ruta_3=".$ruta." OR Ruta_4=".$ruta.") AND (cli.cedula LIKE '%".$cliente."%' OR cli.contacto LIKE '%".$cliente."%' OR cli.razon_social LIKE '%".$cliente."%')";
        endif;
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }

    public function getReporteRuteroAsesor($asesor) {
        $connection = Yii::app()->db;
        $sql = "SELECT cli.cedula,cli.contacto,cli.razon_social,cli.nit,cli.nom_barrio,cli.direccion,".
                "cli.Ruta_1,cli.Ruta_2,cli.Ruta_3,cli.Ruta_4,usua.nombres,usua.origen,usua.unidad_de_negocio,".
                "usua.id_unidad_negocio,usua.cedula as asesor FROM `clientes` cli INNER JOIN `usuarios` usua".
                " ON usua.cedula=".$asesor." ORDER BY cli.contacto";
        $command = $connection->createCommand($sql);
        $dataReader = $command->queryAll();
        return $dataReader;
    }
}
